gsk_render_node_set_opacity
gsk_render_node_set_opaque
gsk_render_node_is_opaque
-gsk_render_node_get_draw_context
GskBlendMode
gsk_render_node_set_blend_mode
GskScalingFilter
gsk_render_node_set_scaling_filters
gsk_render_node_set_name
gsk_texture_node_new
+gsk_cairo_node_new
+gsk_cairo_node_get_draw_context
<SUBSECTION Standard>
GSK_IS_RENDER_NODE
GSK_RENDER_NODE
pop_group = TRUE;
}
- GSK_NOTE (CAIRO, g_print ("Rendering surface %p for node %s[%p] at %g, %g\n",
- gsk_render_node_get_surface (node),
+ GSK_NOTE (CAIRO, g_print ("Rendering node %s[%p] at %g, %g\n",
node->name,
node,
frame.origin.x, frame.origin.y));
}
else
{
- cairo_set_source_surface (cr, gsk_render_node_get_surface (node), frame.origin.x, frame.origin.y);
+ cairo_set_source_surface (cr, gsk_cairo_node_get_surface (node), frame.origin.x, frame.origin.y);
cairo_paint (cr);
}
}
else if (gsk_render_node_has_surface (node))
{
- cairo_surface_t *surface = gsk_render_node_get_surface (node);
+ cairo_surface_t *surface = gsk_cairo_node_get_surface (node);
int gl_min_filter = GL_NEAREST, gl_mag_filter = GL_NEAREST;
get_gl_scaling_filters (node, &gl_min_filter, &gl_mag_filter);
}
/*< private >
- * gsk_render_node_get_surface:
+ * gsk_cairo_node_get_surface:
* @node: a #GskRenderNode
*
* Retrieves the surface set using gsk_render_node_set_surface().
* Returns: (transfer none) (nullable): a Cairo surface
*/
cairo_surface_t *
-gsk_render_node_get_surface (GskRenderNode *node)
+gsk_cairo_node_get_surface (GskRenderNode *node)
{
g_return_val_if_fail (GSK_IS_RENDER_NODE (node), NULL);
+ g_return_val_if_fail (node->type == GSK_CAIRO_NODE, NULL);
return node->surface;
}
}
/**
- * gsk_render_node_get_draw_context:
- * @node: a #GskRenderNode
+ * gsk_cairo_node_new:
+ * @bounds: the rectangle to render the to
+ *
+ * Creates a #GskRenderNode that will render a cairo surface
+ * into the area given by @bounds. You can draw to the cairo
+ * surface using gsk_cairo_node_get_draw_context()
+ *
+ * Returns: A new #GskRenderNode
+ *
+ * Since: 3.90
+ */
+GskRenderNode *
+gsk_cairo_node_new (const graphene_rect_t *bounds)
+{
+ GskRenderNode *node;
+
+ g_return_val_if_fail (bounds != NULL, NULL);
+
+ node = gsk_render_node_new (GSK_CAIRO_NODE);
+
+ graphene_rect_init_from_rect (&node->bounds, bounds);
+
+ return node;
+}
+
+/**
+ * gsk_cairo_node_get_draw_context:
+ * @node: a cairo #GskRenderNode
* @renderer: (nullable): Renderer to optimize for or %NULL for any
*
* Creates a Cairo context for drawing using the surface associated
* Since: 3.90
*/
cairo_t *
-gsk_render_node_get_draw_context (GskRenderNode *node,
- GskRenderer *renderer)
+gsk_cairo_node_get_draw_context (GskRenderNode *node,
+ GskRenderer *renderer)
{
int width, height;
cairo_t *res;
g_return_val_if_fail (GSK_IS_RENDER_NODE (node), NULL);
+ g_return_val_if_fail (node->type == GSK_CAIRO_NODE, NULL);
g_return_val_if_fail (node->is_mutable, NULL);
g_return_val_if_fail (renderer == NULL || GSK_IS_RENDERER (renderer), NULL);
GskRenderNode * gsk_texture_node_new (GskTexture *texture,
const graphene_rect_t *bounds);
+GDK_AVAILABLE_IN_3_90
+GskRenderNode * gsk_cairo_node_new (const graphene_rect_t *bounds);
+GDK_AVAILABLE_IN_3_90
+cairo_t * gsk_cairo_node_get_draw_context (GskRenderNode *node,
+ GskRenderer *renderer);
+
GDK_AVAILABLE_IN_3_90
GskRenderNode * gsk_render_node_get_parent (GskRenderNode *node);
GDK_AVAILABLE_IN_3_90
gboolean opaque);
GDK_AVAILABLE_IN_3_90
gboolean gsk_render_node_is_opaque (GskRenderNode *node);
-GDK_AVAILABLE_IN_3_90
-cairo_t * gsk_render_node_get_draw_context (GskRenderNode *node,
- GskRenderer *renderer);
GDK_AVAILABLE_IN_3_90
void gsk_render_node_set_blend_mode (GskRenderNode *node,
graphene_matrix_t *mv);
double gsk_render_node_get_opacity (GskRenderNode *node);
-cairo_surface_t *gsk_render_node_get_surface (GskRenderNode *node);
+cairo_surface_t *gsk_cairo_node_get_surface (GskRenderNode *node);
GskTexture *gsk_texture_node_get_texture (GskRenderNode *node);
case GSK_VULKAN_OP_SURFACE:
{
- cairo_surface_t *surface = gsk_render_node_get_surface (op->node);
+ cairo_surface_t *surface = gsk_cairo_node_get_surface (op->node);
op->source = gsk_vulkan_image_new_from_data (self->vulkan,
command_buffer,
cairo_image_surface_get_data (surface),
g_return_val_if_fail (snapshot != NULL, NULL);
g_return_val_if_fail (bounds != NULL, NULL);
- node = gsk_renderer_create_render_node (snapshot->renderer);
- gsk_render_node_set_bounds (node, bounds);
+ node = gsk_cairo_node_new (bounds);
if (name)
{
gtk_snapshot_append_node (snapshot, node);
gsk_render_node_unref (node);
- return gsk_render_node_get_draw_context (node, snapshot->renderer);
+ return gsk_cairo_node_get_draw_context (node, snapshot->renderer);
}
static void